package net.valerijtimakov.homefinances.dao.storages.finances;

import java.util.Map;
import net.valerijtimakov.homefinances.domain.finances.AccountItem;
import net.valerijtimakov.homefinances.exceptions.AppExceptionWrongState;
import net.valerijtimakov.homefinances.exceptions.AppPersProviderException;
import net.valerijtimakov.homefinances.exceptions.AppPersistentException;
import net.valerijtimakov.homefinances.exceptions.wrongarg.AppExceptionNullArgument;

public interface IAccountStorage {
	Map<Long, AccountItem> getAllUserAccounts(long userId) throws AppPersProviderException, AppExceptionWrongState;
	Map<Long, AccountItem> getAccounts(long ... id) throws AppPersProviderException, AppExceptionWrongState;
	void addAccount(AccountItem item) throws AppPersistentException, AppExceptionNullArgument, AppExceptionWrongState;
	void removeAccount(long id) throws AppPersProviderException, AppExceptionWrongState;
	void updateAccount(AccountItem item) throws AppPersProviderException, AppExceptionWrongState;
}
